package cn.lcsjsxy.yxc.exception.异常分类;

import org.junit.jupiter.api.Test;

import java.util.Date;
import java.util.Scanner;

/*
* 一、异常的体系结构
* ——java.lang.Error :一般不编写针对性代码进行处理
* ——java.long.Exception:可以进行异常的处理
*                   》编译时异常（checked）
*                       IOException
*                       FileNotFoundException
*                       ClassNotFoundException
*                   》运行时异常（unchecked）
*                       NullPointerException
*                       ArrayIndexOutBoundsException
*                       ClassCastException
*
* 面试题：常见的异常都有哪些？举例说明
* */
public class ExceptionTest {

    //*********************************一下是运行时异常
    //NUllPointerException  空指针
    @Test
    public void test1() {
        int[] arr = null;
        System.out.println(arr[3]);

        String str = "abc";
        str = null;
        System.out.println(str.charAt(0));
    }

    //ArrayIndexOutBoundsException 数组索引越界
    @Test
    public void test2() {
        int[] arr = new int[10];
        System.out.println(arr[10]);

        //StringIndexOutBoundsException 字符串索引越界
        String str = "abc";
        System.out.println(str.charAt(3));
    }

    //ClassCastException 类型转换异常
    @Test
    public void test3() {
        Object obj = new Date();
        String str = (String) obj;
    }

    //NumberFormatException 数字格式异常
    @Test
    public void test4() {
        String str = "abc";
        int num = Integer.parseInt(str);
    }

    //InputMismatchException  输入不匹配异常
    @Test
    public void test5() {
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();
        System.out.println(score);
    }

    //ArithmeticException 算数异常
    @Test
    public void test6() {
        int a = 10;
        int b = 0;
        System.out.println(a / b);
    }
}

    //*************************一下是编译时异常
//    @com.yang_xc.miscellaneous.Test
//    public void test7(){
//        File file=new File("hello.txt");
//        FileInputStream fis=new FileInputStream(file);
//
//        int data=fis.read();
//        while ((data != -1)){
//            System.out.println((char)data);
//            data=fis.read();
//        }
//        fis.close();
//    }
//}
